/*
 * Copyright 2006 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

/*
 * For modifications by Bob Breznak
 * 
 * Copyright (c) 2006, Bob Breznak
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * 
 *    * Redistributions of source code must retain the above copyright notice,
 *      this list of conditions and the following disclaimer.
 *    * Redistributions in binary form must reproduce the above copyright
 *      notice, this list of conditions and the following disclaimer in the
 *      documentation and/or other materials provided with the distribution.
 *    
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
 * POSSIBILITY OF SUCH DAMAGE.
 */
package com.iisageek.client.dialogs;

import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.KeyboardListener;
import com.google.gwt.user.client.ui.Widget;

/**
 * 
 * @author Google Inc.
 * 
 * A dialog that displays some information.
 *
 */
public class AboutDialog extends DialogBox {

	/**
	 * AboutDialog
	 * 
	 * The AboutDialog creates a new AboutDialog with the given title and text.
	 * 
	 * @param caption The bold text at the top
	 * @param text The text in the white area
	 */
	public AboutDialog(String caption, String text) {
		setText(caption);

		DockPanel outer = new DockPanel();
		outer.setSpacing(4);

		HorizontalPanel buttonPanel = new HorizontalPanel();
		buttonPanel.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
		buttonPanel.add(new Button("Close", new ClickListener() {
			public void onClick(Widget sender) {
				hide();
			}
		}));
		outer.add(buttonPanel, DockPanel.SOUTH);

		HTML html = new HTML(text);
		html.setStyleName("dig-AboutText");
		outer.add(html, DockPanel.CENTER);

		outer.setSpacing(8);

		super.setWidget(outer);
	}

	/**
	 * onKeyDownPreview
	 * 
	 * Exits the AboutDialog when Enter or Escape are pressed
	 * 
	 * @param key the UNICODE of the pressed key
	 * @param modifiers UNICODE of any auxillary keys pressed
	 * @return returns true
	 */
	public boolean onKeyDownPreview(char key, int modifiers) {
		switch (key) {
		case KeyboardListener.KEY_ENTER:
		case KeyboardListener.KEY_ESCAPE:
			hide();
			break;
		}
		return true;
	}
}
